home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / DISK / HD_ONOFF / HD_ONOFF.LST < prev   
Encoding:
File List  |  1995-06-16  |  1.7 KB  |  77 lines

  1. ' This little program can be used to torn on/off IDE and SCSI HDs...
  2. ' All code (c) 1995 by Teddy of TMC
  3. ' This program is COPYWARE! Have fun and keep on coding...
  4. '
  5. ' Use this commands: (XHDI driver required!)
  6. '
  7. ' hdon  ->Turns on ALL HDs
  8. ' hdoff ->Turns off all HDs
  9. ' hdonoff(HD_ID,SET)    ->SET=0/1 Turn HD with HD_ID on/off
  10. '
  11. '
  12. > PROCEDURE hdon
  13.   LOCAL oun%,q%,id%,oid%,oids%
  14.   pun%=LPEEK(&H516)
  15.   IF MKL$(LPEEK(pun%+18+16*4))="AHDI"
  16.     oid%=-1
  17.     CLR oids%,ids%
  18.     FOR q%=pun%+2 TO pun%+17
  19.       id%=PEEK(q%)
  20.       IF id%<>255
  21.         ids%=ids% OR (2^id%)
  22.         IF ids%<>oids%
  23.           oids%=ids%
  24.           hdonoff(id%,0)
  25.         ENDIF
  26.       ENDIF
  27.     NEXT q%
  28.   ENDIF
  29. RETURN
  30. > PROCEDURE hdoff
  31.   LOCAL oun%,q%,id%,ids%,oids%
  32.   pun%=LPEEK(&H516)
  33.   IF MKL$(LPEEK(pun%+18+16*4))="AHDI"
  34.     oid%=-1
  35.     CLR oids%,ids%
  36.     FOR q%=pun%+2 TO pun%+17
  37.       id%=PEEK(q%)
  38.       IF id%<>255
  39.         ids%=ids% OR (2^id%)
  40.         IF ids%<>oids%
  41.           oids%=ids%
  42.           hdonoff(id%,1)
  43.         ENDIF
  44.       ENDIF
  45.     NEXT q%
  46.   ENDIF
  47. RETURN
  48. > PROCEDURE hdonoff(unit%,set%)
  49.   '
  50.   ' Turn HD on and off...
  51.   '
  52.   cjar%=LPEEK(&H5A0)
  53.   IF cjar%<>0
  54.     CLR cfound%
  55.     DO
  56.       cookie%=LPEEK(cjar%)
  57.       IF cookie%=&H58484449
  58.         cfound%=1
  59.       ENDIF
  60.       pointer%=LPEEK(cjar%+4)
  61.       EXIT IF cookie%=0 OR cfound%=1
  62.       ADD cjar%,8
  63.     LOOP
  64.     IF cfound%=1
  65.       magic%=LPEEK(pointer%-4)
  66.       IF magic%=&H27011992
  67.         '
  68.         ostack%=GEMDOS(&H20,L:0)
  69.         VOID C:pointer%(4,unit%,0,set%,0)       !Never separate this 3 comms!
  70.         VOID GEMDOS(&H20,L:ostack%)
  71.         '
  72.       ENDIF
  73.     ENDIF
  74.   ENDIF
  75.   '
  76. RETURN
  77.